namespace VRTK.Examples { using UnityEngine; public class SnapDropZoneToggle : MonoBehaviour { public VRTK_SnapDropZone toggleZoneA; public VRTK_SnapDropZone toggleZoneB; protected virtual void OnEnable() { toggleZoneA.ObjectEnteredSnapDropZone += ToggleZoneA; toggleZoneA.ObjectSnappedToDropZone += ToggleZoneA; toggleZoneA.ObjectExitedSnapDropZone += UntoggleZoneA; toggleZoneA.ObjectUnsnappedFromDropZone += UntoggleZoneA; toggleZoneB.ObjectEnteredSnapDropZone += ToggleZoneB; toggleZoneB.ObjectSnappedToDropZone += ToggleZoneB; toggleZoneB.ObjectExitedSnapDropZone += UntoggleZoneB; toggleZoneB.ObjectUnsnappedFromDropZone += UntoggleZoneB; } protected virtual void OnDisable() { toggleZoneA.ObjectEnteredSnapDropZone -= ToggleZoneA; toggleZoneA.ObjectSnappedToDropZone -= ToggleZoneA; toggleZoneA.ObjectExitedSnapDropZone -= UntoggleZoneA; toggleZoneA.ObjectUnsnappedFromDropZone -= UntoggleZoneA; toggleZoneB.ObjectEnteredSnapDropZone -= ToggleZoneB; toggleZoneB.ObjectSnappedToDropZone -= ToggleZoneB; toggleZoneB.ObjectExitedSnapDropZone -= UntoggleZoneB; toggleZoneB.ObjectUnsnappedFromDropZone -= UntoggleZoneB; } protected virtual void ToggleZoneA(object sender, SnapDropZoneEventArgs e) { if (toggleZoneB.GetCurrentSnappedObject() == null) { toggleZoneB.gameObject.SetActive(false); } } protected virtual void UntoggleZoneA(object sender, SnapDropZoneEventArgs e) { if (toggleZoneA.GetCurrentSnappedObject() == null) { toggleZoneB.gameObject.SetActive(true); } } protected virtual void ToggleZoneB(object sender, SnapDropZoneEventArgs e) { if (toggleZoneA.GetCurrentSnappedObject() == null) { toggleZoneA.gameObject.SetActive(false); } } protected virtual void UntoggleZoneB(object sender, SnapDropZoneEventArgs e) { if (toggleZoneB.GetCurrentSnappedObject() == null) { toggleZoneA.gameObject.SetActive(true); } } } }